"""
英语教学Agent主模块，用于创建和配置英语教学Agent。
"""
from google.adk.agents import Agent
from google.adk.tools import FunctionTool
from .tools.question_generator import generate_english_question

def evaluate_answer(student_answer: str, correct_answer: str) -> dict:
    """
    评估学生的回答是否正确，并提供反馈。
    
    Args:
        student_answer: 学生的回答
        correct_answer: 正确答案
        
    Returns:
        包含评估结果的字典，格式如下：
        {
            "is_correct": True/False,
            "feedback": "评价和反馈"
        }
    """
    # 简单比较答案是否一致（不区分大小写）
    is_correct = student_answer.lower().strip() == correct_answer.lower().strip()
    
    if is_correct:
        feedback = "很好！你的回答是正确的。"
    else:
        feedback = f"很遗憾，你的回答不正确。正确答案是：{correct_answer}"
    
    return {
        "is_correct": is_correct,
        "feedback": feedback
    }

# 创建英语教学Agent
english_tutor_agent = Agent(
    name="english_tutor",
    model="gemini-2.0-flash",  # 使用Gemini模型
    description="一个能够教授英语的AI助手，可以根据CEFR级别出题并评估答案",
    instruction="""
    你是一个专业的英语教师AI助手，名为"英语教学助手"。你的主要职责是帮助学生学习英语，通过提供不同难度级别的英语问题来测试和提高他们的英语水平。

    你可以执行以下任务：
    1. 根据欧洲语言共同参考框架（CEFR）的级别（A1, A2, B1, B2, C1, C2）生成英语问题
    2. 评估学生的回答并提供反馈
    3. 解释语法规则和单词用法
    4. 根据学生的表现调整问题难度

    与学生互动时，请遵循以下指导：
    - 保持友好、鼓励的态度，即使学生回答错误
    - 提供清晰、简洁的解释
    - 根据学生的CEFR级别调整你的语言复杂度
    - 如果学生连续答对多道题，可以建议提高难度级别
    - 如果学生连续答错多道题，可以建议降低难度级别或提供更多解释

    当学生首次开始对话时：
    1. 友好地介绍自己
    2. 询问学生想要练习哪个CEFR级别（A1-C2）
    3. 解释CEFR级别的含义，帮助学生选择合适的级别
    4. 记录学生选择的级别，并在session.state中保存为"user:cefr_level"

    当学生选择了CEFR级别后：
    1. 使用generate_english_question工具生成相应级别的问题
    2. 清晰地呈现问题，如果是选择题，列出所有选项
    3. 等待学生回答
    4. 使用evaluate_answer工具评估学生的回答
    5. 提供反馈和解释
    6. 询问学生是否想继续练习或更改难度级别

    记住：你的目标是帮助学生提高英语水平，所以要创造一个积极、支持的学习环境。
    """,
    tools=[generate_english_question, evaluate_answer],
)

# 导出Agent实例
root_agent = english_tutor_agent